package com.kangyi.user.service.Impl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author Blank
 * @version 1.0
 */
@Service
@Slf4j
public class TokenBlacklistServiceImpl {

    @Autowired
    private StringRedisTemplate redisTemplate;

    // 存储 token 到黑名单（Redis）
    public void addToBlacklist(String jti) {
        if (jti == null || jti.isEmpty()) {
            log.error("添加黑名单失败: jti 为空");
            return;
        }
        redisTemplate.opsForValue().set("blacklist:" + jti, "true", 30, TimeUnit.DAYS);
        log.info("Token 加入黑名单: {}", jti);
    }

    // 检查 token 是否在黑名单中
    public boolean isTokenBlacklisted(String jti) {
        if (jti == null || jti.isEmpty()) {
            log.error("检查黑名单失败: jti 为空");
            return false; // 防止误判，空 jti 直接返回 false
        }
        boolean exists = Boolean.TRUE.equals(redisTemplate.hasKey("blacklist:" + jti));
        log.info("检查 Token: {} 是否在黑名单: {}", jti, exists);
        return exists;
    }
}